package de.fhdw.hbs.utils;

import de.fhdw.hbs.entity.dto.BewertungDTO;
import de.fhdw.hbs.entity.dto.KundeDTO;
import de.fhdw.hbs.entity.dto.ReservierungDTO;
import de.fhdw.hbs.entity.pojo.Bewertung;
import de.fhdw.hbs.entity.pojo.Kunde;
import de.fhdw.hbs.entity.pojo.Reservierung;

/**
 * 
 * @author SZAHEL
 * 
 */
public class EntityMapper {

	/**
	 * 
	 * @param dto
	 * @return
	 */
	public static Kunde getKundeFromDTO(KundeDTO dto) {
		Kunde k = new Kunde();

		k.setId(dto.getId());
		k.setNachname(dto.getNachname());
		k.setVorname(dto.getVorname());
		k.setAnrede(dto.getAnrede());
		k.setTitel(dto.getTitel());
		k.setGk(dto.isGk());
		k.setStrasse(dto.getStrasse());
		k.setPlz(dto.getPlz());
		k.setOrt(dto.getOrt());
		k.setLand(dto.getLand());
		k.setTel(dto.getTel());
		k.setFax(dto.getFax());
		k.setMobil(dto.getMobil());
		k.setFirma(dto.getFirma());
		k.setEmail(dto.getEmail());
		k.setPwHash(dto.getPwHash());

		return k;
	}

	/**
	 * 
	 * @param k
	 * @param message
	 * @param returnCode
	 * @return
	 */
	public static KundeDTO getDTOFromKunde(Kunde k, String message, int returnCode) {
		KundeDTO dto = new KundeDTO();
		
		dto.setId(k.getId());
		dto.setNachname(k.getNachname());
		dto.setVorname(k.getVorname());
		dto.setAnrede(k.getAnrede());
		dto.setTitel(k.getTitel());
		dto.setGk(k.isGk());
		dto.setStrasse(k.getStrasse());
		dto.setPlz(k.getPlz());
		dto.setOrt(k.getOrt());
		dto.setLand(k.getLand());
		dto.setTel(k.getTel());
		dto.setFax(k.getFax());
		dto.setMobil(k.getMobil());
		dto.setFirma(k.getFirma());
		dto.setEmail(k.getEmail());
		dto.setPwHash(k.getPwHash());

		return dto;
	}

	/**
	 * 
	 * @param dto
	 * @return
	 */
	public static Bewertung getBewertungFromDTO(BewertungDTO dto) {
		Bewertung b = new Bewertung(dto.getSauberkeit(),dto.getAusstattung(),dto.getZimmer(), dto.getLage(), dto.getService(), dto.getUnterhaltung());

		// Attribute mappen

		return b;
	}

	/**
	 * 
	 * @param b
	 * @param message
	 * @param returnCode
	 * @return
	 */
	public static BewertungDTO getDTOFromBewertung(Bewertung b, String message, int returnCode) {
		BewertungDTO dto = new BewertungDTO(b.getSauberkeit(), b.getAusstattung(), b.getZimmer(), b.getLage(), b.getService(), b.getUnterhaltung());

		// Attribute mappen

		return dto;
	}


	/**
	 * 
	 * @param dto
	 * @return
	 */
	public static Reservierung getReservierungFromDTO(ReservierungDTO dto) {
		Reservierung r = new Reservierung();
		r.setAbreise(dto.getAbreise());
		r.setAnreise(dto.getAnreise());
		r.setAnzahl_dz(dto.getAnzahl_dz());
		r.setAnzahl_ez(dto.getAnzahl_ez());
		r.setKunde(EntityMapper.getKundeFromDTO(dto.getKunde()));
		r.setHotel(dto.getHotel());
		r.setPersonenzahl(dto.getPersonenzahl());
		return r;
	}

	/**
	 * 
	 * @param r
	 * @return
	 */
	public static ReservierungDTO getDTOFromReservierung(Reservierung r, String message, int returnCode) {
		ReservierungDTO dto = new ReservierungDTO();
		dto.setAbreise(r.getAbreise());
		dto.setAnreise(r.getAnreise());
		dto.setAnzahl_dz(r.getAnzahl_dz());
		dto.setAnzahl_ez(r.getAnzahl_ez());
		dto.setKunde(EntityMapper.getDTOFromKunde(r.getKunde(), null, 0));
		dto.setPersonenzahl(r.getPersonenzahl());
		dto.setMessage(null);
		dto.setReturnCode(0);
		return dto;
	}
}
